package com.kgc.scd.service;


import com.kgc.scd.bean.Coupon;
import com.kgc.scd.bean.CouponInn;
import com.kgc.scd.bean.CouponUser;
import com.kgc.scd.util.PageSupport;
import com.kgc.scd.util.UserAnno;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

/**
 * Created On : 2022/6/13.
 * <p>
 * Author     : nainai
 * <p>
 * Description: 优惠券业务，使用Feign
 */
@FeignClient(value = "blmall-server-ly-8103")
public interface CouponService {

    /**
     * @author : nainai
     * @date   : 2022/6/13
     * @param  : [java.lang.Integer]
     * @return : com.kgc.scd.util.RequestResult<java.util.List<com.kgc.scd.bean.Coupon>>
     * @description : 查询该品类支持的优惠券，通用券也会返回
     */
    /**
     * @author : nainai
     * @date   : 2022/6/13
     * @param  : [java.lang.Integer]
     * @return : com.kgc.scd.util.RequestResult<java.util.List<com.kgc.scd.bean.Coupon>>
     * @description : 查询该品类支持的优惠券，通用券也会返回
     */
    @GetMapping("/queryCoupons")
    PageSupport<Coupon> queryCoupons(@RequestParam(value = "cid", required = false) Integer cid, @RequestParam(value = "pageNo", required = false, defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", required = false, defaultValue = "3") Integer pageSize);

    /**
     * @author : nainai
     * @date   : 2022/6/14
     * @param  : [com.kgc.scd.util.UserAnno]
     * @return : java.util.List<com.kgc.scd.bean.CouponUser>
     * @description : 查询用户已拥有的优惠券
     */
    @PostMapping("/queryUserCoupons")
    List<CouponUser> queryUserCoupons(@RequestBody UserAnno userAnno);

    /**
     * @author : nainai
     * @date   : 2022/6/14
     * @param  : [java.util.List<com.kgc.scd.bean.Coupon>]
     * @return : com.kgc.scd.util.RequestResult<java.lang.String>
     * @description : 添加优惠券
     */
    @PostMapping("/insertCoupons")
    boolean insertCoupons(@RequestBody List<Coupon> couponList);

    /**
     * @author : nainai
     * @date   : 2022/6/15
     * @param  : [java.util.List<java.lang.Integer>, java.lang.Integer]
     * @return : boolean
     * @description : 修改优惠券状态
     */
    @PostMapping("/changeCouponsStatus")
    boolean changeCouponsStatus(@RequestParam("ids") List<Integer> ids, @RequestParam("status") Integer status);

    /**
     * @author : nainai
     * @date   : 2022/6/14
     * @param  : [com.kgc.scd.util.UserAnno, java.lang.Integer]
     * @return : com.kgc.scd.util.RequestResult<java.lang.String>
     * @description : 用户领取优惠券
     */
    @PostMapping("/userPullCoupon")
    Map<String, String> userPullCoupon(@RequestBody UserAnno userAnno, @RequestParam("coId") Integer coId);

    /**
     * @author : nainai
     * @date   : 2022/6/15
     * @param  : [com.kgc.scd.util.UserAnno, java.lang.String]
     * @return : java.util.List<com.kgc.scd.bean.Coupon>
     * @description : 查询订单可用优惠券
     */
    @PostMapping("/queryOrderCoupons")
    List<CouponInn> queryOrderCoupons(@RequestBody UserAnno userAnno, @RequestParam("orderId") String orderId);

}
